package com.myBlast.client;

import java.util.ArrayList;
import java.util.List;
import com.myBlast.client.models.ArcheaData;
import com.myBlast.client.models.BacteriaData;
import com.myBlast.client.models.EucrayoteData;
import com.myBlast.client.models.FormModel;
import com.myBlast.client.models.NonLeafTaxonomyModel;

/**
 * This is a utility class for providing the dummy data
 * for various widgets
 * @author Parit Bansal
 */
public class StaticData {

	public static List<FormModel> getBlastProgams()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("blastn"));
		model.add(new FormModel("blastp"));
		model.add(new FormModel("blastx"));
		model.add(new FormModel("tblastn"));
		model.add(new FormModel("tblastx"));
		return model;
	}
	
	private static List<FormModel> getProteinDatabases()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("Non-redundant Protein Sequences (nr)","nr"));
		model.add(new FormModel("Reference Proteins","refseq_protein"));
		model.add(new FormModel("SwissProt Protein Sequence","swissprot"));
		model.add(new FormModel("Patented Protein Sequence (pat)","pataa"));
		model.add(new FormModel("Protein DataBank Proteins (pdb)","pdbaa"));
		model.add(new FormModel("Enviornmental Samples","env_nr"));
		return model;
	}
	
	private static List<FormModel> getNucleotideDatabases()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("Nucleotide Collection (nr/nt)","nt"));
//		model.add(new FormModel("Reference mRNA sequences (refseq_rna)","refseq_rna"));
//		model.add(new FormModel("Reference Genomic sequences (refseq_genome)","refseq_genomic"));
//		model.add(new FormModel("NCBI Genomes (chromosome)","chromosome"));
//		model.add(new FormModel("Expressed Sequence Tags (est)","est"));
//		model.add(new FormModel("Non-Human Non-Mouse EST (est_others)","est_others"));
//		model.add(new FormModel("Genomic Survey Sequences (gss)","gss"));
//		model.add(new FormModel("HighThroughPut Genomic Sequences (alu_repeats)","alu_repeats"));
//		model.add(new FormModel("Sequence Tagges Sites (dbsts)","dbsts"));
		model.add(new FormModel("Whole Genome Shotgun reads (wgs)","wgs"));
		model.add(new FormModel("Enviornmental Samples (env_nt)","env_nt"));
		return model;
	}
	
	public static List<FormModel> getBlastPDatabase()
	{
		return getProteinDatabases();
	}
	
	public static List<FormModel> getBlastNDatabase()
	{
		List<FormModel> models = getNucleotideDatabases();
//		models.add(new FormModel("Human Genomic plus Transcripts (H + T)"));
//		models.add(new FormModel("Mouse Genomic plus Transcripts (M + T)"));
		return models;
	}
	
	public static List<FormModel> getTBlastXDatabase()
	{
		return getNucleotideDatabases();
	}
	
	public static List<FormModel> getTBlastNDatabase()
	{
		return getNucleotideDatabases();
	}
	
	public static List<FormModel> getBlastXDatabase()
	{
		return getProteinDatabases();
	}
	
	public static List<FormModel> getTableData()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("human7","9606","5.3","1.2"));
		model.add(new FormModel("human6","9607","5.5","1.7"));
		model.add(new FormModel("human5","9608","5.6","1.6"));
		model.add(new FormModel("human4","9609","5.7","1.5"));
		model.add(new FormModel("human3","9610","5.8","1.4"));
		model.add(new FormModel("human2","9611","5.9","1.3"));
		model.add(new FormModel("human1","9612","5.1","1.2"));
		return model;
	}
	
	public static List<FormModel> getPathWayResultData()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("human4",new Boolean(true),new Boolean(true),new Boolean(false)));
		model.add(new FormModel("human2",new Boolean(true),new Boolean(false),new Boolean(false)));
		model.add(new FormModel("human3",new Boolean(false),new Boolean(false),new Boolean(false)));
		model.add(new FormModel("human4",new Boolean(true),new Boolean(true),new Boolean(true)));
		return model;
	}
	
	
	
	public static List<FormModel> getExpecValues()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("0.0001"));
		model.add(new FormModel("0.01"));
		model.add(new FormModel("1"));
		model.add(new FormModel("10"));
		model.add(new FormModel("100"));
		model.add(new FormModel("1000"));
		return model;
	}
	
	public static List<FormModel> getFilterValues()
	{
		List<FormModel> model = new ArrayList<FormModel>();
//		model.add(new FormModel("default"));
		model.add(new FormModel("none"));
		return model;
	}
	
	public static List<FormModel> getDescriptionValues()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("0"));
		model.add(new FormModel("10"));
		model.add(new FormModel("50"));
		model.add(new FormModel("100"));
		model.add(new FormModel("250"));
		model.add(new FormModel("500"));
		return model;
	}
	
	public static List<FormModel> getAlignmentValues()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("0"));
		model.add(new FormModel("10"));
		model.add(new FormModel("50"));
		model.add(new FormModel("100"));
		model.add(new FormModel("250"));
		model.add(new FormModel("500"));
		return model;
	}
	
	public static List<FormModel> getDatabaseValues()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("Genomic"));
		model.add(new FormModel("Protein"));
		return model;
	}
	
	public static List<FormModel> getTaxSearchProperties()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("name"));
		model.add(new FormModel("gid"));
		return model;
	}
	
	public static List<FormModel> getQueryTypes()
	{
		List<FormModel> model = new ArrayList<FormModel>();
		model.add(new FormModel("DNA"));
		model.add(new FormModel("Protein"));
		return model;
	}
	
	public static NonLeafTaxonomyModel getTaxTree()
	{
		NonLeafTaxonomyModel[] leafTaxonomyModels = new NonLeafTaxonomyModel[] {
				ArcheaData.getArcheaData(),
				BacteriaData.getBateriaData(),
				EucrayoteData.getEuData()};
		NonLeafTaxonomyModel root = new NonLeafTaxonomyModel("root");
	    for (int i = 0; i < leafTaxonomyModels.length; i++) {
	      root.add((NonLeafTaxonomyModel) leafTaxonomyModels[i]);
	    }	    return root;
	}
} // StaticData
